home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 20 / AMIGAplus Sonderheft 20 (1999)(ICP)(DE)[!].iso / PublicDomain / Alternatives / LinuxAPUS / Linux.aux < prev    next >
Text File  |  1999-01-01  |  14KB  |  421 lines

  1. /*
  2.  * Linux.aux - auxiliary rx script for Linux launcher
  3.  *
  4.  * $VER: Linux.aux revision 1 (25.02.99) Duncan Gibb
  5.  *
  6.  * Based on UAEWB.aux 0.2 (26.01.98) © by Samuel Devulder
  7.  *
  8.  * Usage: Linux.aux [default|about|use|save|saveas <filename>|open <filename>]
  9. */
  10.  
  11. /* The following are used in the two default config settings
  12. */
  13.  
  14. trace all
  15.  
  16. DEFAULT_KERNEL          = 'Kernels/vmlinux'
  17.  
  18. DEFAULT_TEST_RAMDISK    = 'RAMDisks/ramdisk.image.gz'
  19. DEFAULT_REDHAT_RAMDISK  = 'RAMDisks/apus-rh-ramdisk.image990103.gz'
  20.  
  21. /*
  22. **
  23. */
  24.  
  25.  
  26. if ~show('p','LINUX') then do
  27.     if exists("c:Requestchoice") then address command 'C:RequestChoice >nil: Linux.aux "Please use the Linux.rexx script which provides a GUI" "OK"'
  28.     else address command 'Echo >"CON://320/50/Linux.aux/WAIT/CLOSE" "Please use the Linux.rexx script which provides a GUI" "OK"'
  29.     exit(121)   /* Not executable ;-) */
  30. end
  31.  
  32.  
  33. MUIA_Background         = 0x8042545b
  34. MUIA_ControlChar        = 0x8042120b
  35. MUIA_Frame              = 0x8042ac64
  36. MUIA_Text_HiChar        = 0x804218ff
  37. MUIA_Window_DepthGadget = 0x80421923
  38. MUIA_Window_DragBar     = 0x8042045d
  39. MUIA_Window_SizeGadget  = 0x8042e33d
  40.  
  41. MUII_WindowBack  = 0
  42. MUIV_Frame_None  = 0
  43. FALSE = 0
  44.  
  45. OPTIONS RESULTS
  46. PARSE ARG ACTION FILENAME .
  47. ACTION=upper(ACTION)
  48. if (left(FILENAME,1) = '"') & (right(FILENAME,1) = '"')  then FILENAME=substr(FILENAME,2,length(FILENAME)-2)
  49.  
  50. ADDRESS LINUX
  51.  
  52. /* This is the default place to load and save stuff */
  53. LINUXPREFS = "ENV:LINUX_CONFIG"
  54.  
  55. /* 'DEFAULT' set prefs to default for testing the kernel */
  56. IF ACTION='DEFAULT' THEN DO
  57.  
  58.     POPASL  ID KERNL CONTENT DEFAULT_KERNEL
  59.     CHECK   ID APUS  ATTRS 0X8042654B  "1"
  60.     CHECK   ID NOBAT ATTRS 0X8042654B  "1"
  61.     CHECK   ID 60NS  ATTRS 0X8042654B  "0"
  62.     CYCLE   ID AMIFB LABEL "Not specified"
  63.     SLIDER  ID ADEPT ATTRS 0X8042AE3A  "4"
  64.     CYCLE   ID PM2FB LABEL "Not specified"
  65.     CHECK   ID PM2OM ATTRS 0X8042654B  "0"
  66.     CYCLE   ID VIRGE LABEL "Not specified"
  67.     CYCLE   ID CYBER LABEL "Not specified"
  68.     CYCLE   ID CLGEN LABEL "Not specified"
  69.     CYCLE   ID RETZ3 LABEL "Not specified"
  70.     POPLIST ID ROOT  CONTENT "/dev/ram"
  71.     POPASL  ID RAMDI CONTENT DEFAULT_TEST_RAMDISK
  72.     POPLIST ID BOPTS CONTENT ""
  73.     POPLIST ID KOPTS CONTENT ""
  74.  
  75.     EXIT 0
  76. END
  77. /* This sets up to run the RedHat installer from a ramdisk image */
  78. IF ACTION='DEFAULT_REDHAT' THEN DO
  79.  
  80.     POPASL  ID KERNL CONTENT DEFAULT_KERNEL
  81.     CHECK   ID APUS  ATTRS 0X8042654B  "1"
  82.     CHECK   ID NOBAT ATTRS 0X8042654B  "1"
  83.     CHECK   ID 60NS  ATTRS 0X8042654B  "0"
  84.     CYCLE   ID AMIFB LABEL "Not specified"
  85.     SLIDER  ID ADEPT ATTRS 0X8042AE3A  "4"
  86.     CYCLE   ID PM2FB LABEL "Not specified"
  87.     CHECK   ID PM2OM ATTRS 0X8042654B  "0"
  88.     CYCLE   ID VIRGE LABEL "Not specified"
  89.     CYCLE   ID CYBER LABEL "Not specified"
  90.     CYCLE   ID CLGEN LABEL "Not specified"
  91.     CYCLE   ID RETZ3 LABEL "Not specified"
  92.     POPLIST ID ROOT  CONTENT "/dev/ram"
  93.     POPASL  ID RAMDI CONTENT DEFAULT_REDHAT_RAMDISK
  94.     POPLIST ID BOPTS CONTENT ""
  95.     POPLIST ID KOPTS CONTENT ""
  96.  
  97.     EXIT 0
  98. END
  99. IF ACTION='ABOUT' THEN DO
  100.     WINDOW ID ABOUT ATTRS MUIA_Window_DepthGadget FALSE,
  101.                   MUIA_Window_DragBar FALSE MUIA_Window_SizeGadget FALSE
  102.         GROUP HORIZ
  103.             BUTTON ICON "Linux Launcher" TRANS ATTRS MUIA_Background MUII_WindowBack MUIA_Frame MUIV_Frame_None
  104.             TEXT ATTRS MUIA_Background MUII_WindowBack MUIA_Frame MUIV_Frame_None,
  105.                 LABEL   "\033c"||,
  106.                         "Linux is a Unix-like operating system.\n\n"||,
  107.                         "This launcher is designed for Linux/APUS - a PowerPC version for Amigas\n"||,
  108.                         "with phase5 PowerUP boards - but should work with Amiga Linux-M68K.\n\n"||,
  109.                         "Please refer to\nhttp://sunsite.auc.dk/pub/os/linux/apus/docs/faq.html\n"||,
  110.                         "http://www.linux-m68k.org/\n\n"||,
  111.                         "Launcher by Duncan Gibb\n"||,
  112.                         "Based on UAEWB by Samuel Devulder\n"||,
  113.                         "This GUI uses MUIRexx by Russell Leighton"
  114.         ENDGROUP
  115.         GROUP HORIZ
  116.             SPACE HORIZ
  117.             BUTTON ID OK_BUTT COMMAND """WINDOW ID ABOUT CLOSE""" PORT LINUX ATTRS MUIA_ControlChar 13 LABEL "Ok"
  118.             SPACE HORIZ
  119.         ENDGROUP
  120.     ENDWINDOW
  121.     EXIT 0
  122. END
  123. IF ACTION='OPEN' THEN DO
  124.     /* Load a previously saved config */
  125.     if ~open(FILE_TO_LOAD, FILENAME, "r") then do
  126.         ADDRESS LINUX
  127.         WINDOW ID WRONGFILE ATTRS MUIA_Window_DepthGadget FALSE,
  128.                     MUIA_Window_DragBar FALSE MUIA_Window_SizeGadget FALSE
  129.             GROUP HORIZ
  130.                 BUTTON ICON "Linux Launcher" TRANS ATTRS MUIA_Background MUII_WindowBack MUIA_Frame MUIV_Frame_None
  131.                 TEXT ATTRS MUIA_Background MUII_WindowBack MUIA_Frame MUIV_Frame_None,
  132.                     LABEL   "\033cConfig file '"FILENAME"' could not be opened.\nDoes it exist?"
  133.             ENDGROUP
  134.             GROUP HORIZ
  135.                 SPACE HORIZ
  136.                 BUTTON ID OK_BUTT COMMAND """WINDOW ID WRONGFILE CLOSE""" PORT LINUX ATTRS MUIA_ControlChar 13 LABEL "Oops"
  137.                 SPACE HORIZ
  138.             ENDGROUP
  139.         ENDWINDOW
  140.         close(FILE_TO_LOAD)
  141.         EXIT 255
  142.     end
  143.     if ~(readln(FILE_TO_LOAD) = '/*LINUXPREFS*/') then do
  144.         ADDRESS LINUX
  145.         WINDOW ID WRONGFILE ATTRS MUIA_Window_DepthGadget FALSE,
  146.                     MUIA_Window_DragBar FALSE MUIA_Window_SizeGadget FALSE
  147.             GROUP HORIZ
  148.                 BUTTON ICON "Linux Launcher" TRANS ATTRS MUIA_Background MUII_WindowBack MUIA_Frame MUIV_Frame_None
  149.                 TEXT ATTRS MUIA_Background MUII_WindowBack MUIA_Frame MUIV_Frame_None,
  150.                     LABEL   "\033cFile '"FILENAME"' is not a Linux Launcher config file."
  151.             ENDGROUP
  152.             GROUP HORIZ
  153.                 SPACE HORIZ
  154.                 BUTTON ID OK_BUTT COMMAND """WINDOW ID WRONGFILE CLOSE""" PORT LINUX ATTRS MUIA_ControlChar 13 LABEL "Oops"
  155.                 SPACE HORIZ
  156.             ENDGROUP
  157.         ENDWINDOW
  158.         close(FILE_TO_LOAD)
  159.         EXIT 255
  160.     end
  161.  
  162.     close(FILE_TO_LOAD)
  163.  
  164.     ADDRESS COMMAND
  165.  
  166.     'rx 'FILENAME''
  167.  
  168.     EXIT 0
  169. END
  170. if ACTION='SAVEAS' then do
  171.     /* Save to a user-specified file */
  172.     if ~open(ENVFILE, FILENAME, "w") then do
  173.         ADDRESS LINUX
  174.         WINDOW ID NOSAVE ATTRS MUIA_Window_DepthGadget FALSE,
  175.                     MUIA_Window_DragBar FALSE MUIA_Window_SizeGadget FALSE
  176.             GROUP HORIZ
  177.                 BUTTON ICON "Linux Launcher" TRANS ATTRS MUIA_Background MUII_WindowBack MUIA_Frame MUIV_Frame_None
  178.                 TEXT ATTRS MUIA_Background MUII_WindowBack MUIA_Frame MUIV_Frame_None,
  179.                     LABEL   "\033cCould not save to your file "FILENAME"."
  180.             ENDGROUP
  181.             GROUP HORIZ
  182.                 SPACE HORIZ
  183.                 BUTTON ID OK_BUTT COMMAND """WINDOW ID NOSAVE CLOSE""" PORT LINUX ATTRS MUIA_ControlChar 13 LABEL "Oh dear"
  184.                 SPACE HORIZ
  185.             ENDGROUP
  186.         ENDWINDOW
  187.         EXIT 255
  188.     end
  189.  
  190.     save_config()
  191.  
  192.     close(ENVFILE)
  193.  
  194.     exit(0)
  195.  
  196. end
  197.  
  198.  
  199. /* Should be use, save or exit*/
  200. if ~((ACTION='USE')|ACTION='SAVE'|ACTION='EXIT') then do
  201.     ADDRESS LINUX
  202.     WINDOW ID WRONGACTION ATTRS MUIA_Window_DepthGadget FALSE,
  203.                 MUIA_Window_DragBar FALSE MUIA_Window_SizeGadget FALSE
  204.         GROUP HORIZ
  205.             BUTTON ICON "Linux Launcher" TRANS ATTRS MUIA_Background MUII_WindowBack MUIA_Frame MUIV_Frame_None
  206.             TEXT ATTRS MUIA_Background MUII_WindowBack MUIA_Frame MUIV_Frame_None,
  207.                 LABEL   "\033cThe action "ACTION" is not recognised."
  208.         ENDGROUP
  209.         GROUP HORIZ
  210.             SPACE HORIZ
  211.             BUTTON ID OK_BUTT COMMAND """WINDOW ID WRONGACTION CLOSE""" PORT LINUX ATTRS MUIA_ControlChar 13 LABEL "Oops"
  212.             SPACE HORIZ
  213.         ENDGROUP
  214.     ENDWINDOW
  215.     exit(236)   /* Not implemented */
  216. end
  217.  
  218.  
  219. WINDOW ID WAIT ATTRS 0x80421923 0 0x8042045d 0
  220. if ACTION='EXIT' then LABEL "\033b\033cPlease wait\nwhile Linux config is saved...\033n"
  221. else LABEL "\033b\033cPlease wait\nwhile Linux loads and boots...\033n"
  222. ENDWINDOW
  223.  
  224. if ~OPEN(ENVFILE,LINUXPREFS,"w") then do
  225.     ADDRESS LINUX
  226.     WINDOW ID NOSAVE ATTRS MUIA_Window_DepthGadget FALSE,
  227.                 MUIA_Window_DragBar FALSE MUIA_Window_SizeGadget FALSE
  228.         GROUP HORIZ
  229.             BUTTON ICON "Linux Launcher" TRANS ATTRS MUIA_Background MUII_WindowBack MUIA_Frame MUIV_Frame_None
  230.             TEXT ATTRS MUIA_Background MUII_WindowBack MUIA_Frame MUIV_Frame_None,
  231.                 LABEL   "\033cCould not save config to "FILENAME"."
  232.         ENDGROUP
  233.         GROUP HORIZ
  234.             SPACE HORIZ
  235.             BUTTON ID OK_BUTT COMMAND """WINDOW ID NOSAVE CLOSE""" PORT LINUX ATTRS MUIA_ControlChar 13 LABEL "Oops"
  236.             SPACE HORIZ
  237.         ENDGROUP
  238.     ENDWINDOW
  239.     EXIT 255
  240. end
  241.  
  242.     save_config()
  243.  
  244. call CLOSE(ENVFILE)
  245.  
  246. /* if user selected 'save' or 'exit', copy the prefs file to ENVARC: */
  247. if (ACTION='SAVE' | ACTION='EXIT') then address COMMAND "copy "linuxprefs" ENVARC: noreq quiet"
  248.  
  249.  
  250. /* Kill the front end */
  251. WINDOW ID MAIN CLOSE
  252. WINDOW ID WAIT CLOSE
  253.  
  254. QUIT
  255.  
  256.  
  257. if ACTION='EXIT' then exit(0)
  258.  
  259.  
  260. /* create bootstrap command line */
  261. line = ""
  262.  
  263. /* APUSness first */
  264. if (APUS ~= "") then line = line '--apus'
  265.  
  266. /* Name the kernel */
  267. if (KERNELNAME = "") then do
  268.     if exists("C:RequestChoice") then address command 'C:RequestChoice "Linux Launcher" "You must specify a kernel." "Cancel"'
  269.     else address command 'echo >"CON://320/50/Linux Launcher/WAIT/CLOSE" "You must specify a kernel."'
  270.     exit(116)   /* Req arg missing */
  271. end
  272. if (~exists(KERNELNAME)) then do
  273.     if exists("C:RequestChoice") then address command 'C:RequestChoice "Linux Launcher" "Kernel image '''|| KERNELNAME ||''' was not found." "Cancel"'
  274.     else address command 'echo >"CON://320/50/Linux Launcher/WAIT/CLOSE" "Kernel image '''|| KERNELNAME ||'''was not found."'
  275.     exit(205)   /* Object not found */
  276. end
  277.  
  278.  
  279. line = line '-k' KERNELNAME
  280.  
  281.  
  282. /* Is a RAM disk image required? */
  283. if ((RAM_DISK ~= "") & (~exists(RAM_DISK))) then do
  284.     if exists("C:RequestChoice") then address command 'C:RequestChoice "Linux Launcher" "RAM disk image '''|| RAM_DISK ||''' was not found." "Cancel"'
  285.     else address command 'echo >"CON://320/50/Linux Launcher/WAIT/CLOSE" "RAM disk image '''|| RAM_DISK ||'''was not found."'
  286.     exit(205)   /* Object not found */
  287. end
  288.  
  289. if (RAM_DISK ~= "") then line = line '-r' RAM_DISK
  290.  
  291. /* Virge can't do its own init yet */
  292. if (VIRGE_MODE ~= 'Not specified') then line = line "--keep-video"
  293.  
  294.  
  295. /* Tack on user's own bootstrap options */
  296. line = line STRAP_OPTS
  297.  
  298. /*
  299. ** Here endeth the BootStrap options
  300. ** Kernel options follow
  301. */
  302.  
  303. if NOBATS   then line = line 'nobats'
  304. if RAM60NS  then line = line '60nsram'
  305.  
  306. if (ROOT_PART ~= "") then line = line 'root=' || ROOT_PART
  307.  
  308. /* video options */
  309.  
  310. if (PM2FB_MODE ~= 'Not specified') then do
  311.     line = line 'video=pm2fb:' || PM2FB_MODE
  312.     if (PM2FB_OLDMEM = "1") then line = line || ',oldmem'
  313. end
  314.  
  315. if (VIRGE_MODE ~= 'Not specified') then line = line 'video=virge:' || VIRGE_MODE
  316.  
  317. if (CYBER_MODE ~= 'Not specified') then line = line 'video=cyber:' || CYBER_MODE
  318.  
  319. if (CLGEN_MODE ~= 'Not specified') then do
  320.     line = line 'video=clgen'
  321.     if (CLGEN_MODE ~= 'Use AmigaOS mode') then line = line || ':' || CLGEN_MODE
  322. end
  323.  
  324. if (RETZ3_MODE ~= 'Not specified') then line = line 'video=retz3:' || RETZ3_MODE
  325.  
  326.  
  327. /* Put AmiFB last on the assumption you want gfx card as fb0 */
  328. /* AmiFB can't be specified without giving a depth */
  329. /* NB: No way to check if depth is valid */
  330.  
  331. if (AMIFB_MODE = 'Auto') then line = line 'video=amifb:depth:' || AMIFB_DEPTH
  332.  
  333. if (AMIFB_MODE = 'off')  then line = line 'video=amifb:off'
  334.  
  335. if (AMIFB_MODE ~= 'Not specified') & ((AMIFB_MODE ~= 'Auto') & (AMIFB_MODE ~= 'off')) then line = line 'video=amifb:' || AMIFB_MODE || ',depth:' || AMIFB_DEPTH
  336.  
  337. /* That's all that can be configured with the GUI
  338. ** Add on user kernel options
  339. */
  340.  
  341. line = line KERNEL_OPTS
  342.  
  343.  
  344. /* Launch the kernel */
  345.  
  346. ADDRESS COMMAND
  347.  
  348. 'echo >T:LINUX_LAUNCH_SCRIPT "echo *"**n**nLaunching with**n**n : BootStrap 'line'**n**n*""'
  349. 'echo >>T:LINUX_LAUNCH_SCRIPT "BootStrap 'line'"'
  350.  
  351. 'NewShell con:/15//999/Linux_Launch/close/wait from t:LINUX_LAUNCH_SCRIPT'
  352.  
  353. exit(0)
  354.  
  355.  
  356. /* GET value and update prefs */
  357. get_val: PROCEDURE
  358.     PARSE ARG CMD, SET
  359.     address LINUX CMD
  360.     GVAL=RESULT
  361.     call writeln(ENVFILE,CMD SET '"'||GVAL'"')
  362. return GVAL
  363.  
  364.  
  365. save_config: PROCEDURE,
  366.     EXPOSE  KERNELNAME APUS NOBATS RAM60NS,
  367.             AMIFB_MODE AMIFB_DEPTH PM2FB_MODE PM2FB_OLDMEM,
  368.             VIRGE_MODE CYBER_MODE CLGEN_MODE RETZ3_MODE,
  369.             ROOT_PART RAM_DISK STRAP_OPTS KERNEL_OPTS
  370.     /* Let's have some globals ;-) */
  371.  
  372.     /* Some MUI Tags which may be useful */
  373.  
  374.     Cycle_Active            = 0x80421788
  375.     Selected                = 0x8042654B
  376.     Slider_Level            = 0x8042AE3A
  377.  
  378.  
  379.     /* Config file is an Arexx script.
  380.     ** Since "loading" it is actually _running_ it,
  381.     ** use a specific first line as an identifier
  382.     */
  383.  
  384.     call writeln(ENVFILE,"/*LINUXPREFS*/");
  385.  
  386.     call writeln(ENVFILE,"ADDRESS LINUX")
  387.  
  388.  
  389.     /* Kernel */
  390.  
  391.     KERNELNAME  = get_val("POPASL  ID KERNL", CONTENT)
  392.     APUS        = get_val("CHECK   ID APUS  ATTRS" Selected,"")
  393.     NOBATS      = get_val("CHECK   ID NOBAT ATTRS" Selected,"")
  394.     RAM60NS     = get_val("CHECK   ID 60NS  ATTRS" Selected,"")
  395.  
  396.     /* Display */
  397.     AMIFB_MODE  = get_val("CYCLE   ID AMIFB", LABEL)
  398.     AMIFB_DEPTH = get_val("SLIDER  ID ADEPT ATTRS" Slider_Level,"")
  399.  
  400.     PM2FB_MODE  = get_val("CYCLE   ID PM2FB", LABEL)
  401.     PM2FB_OLDMEM= get_val("CHECK   ID PM2OM ATTRS" Selected, "")
  402.  
  403.     VIRGE_MODE  = get_val("CYCLE   ID VIRGE", LABEL)
  404.  
  405.     CYBER_MODE  = get_val("CYCLE   ID CYBER", LABEL)
  406.  
  407.     CLGEN_MODE  = get_val("CYCLE   ID CLGEN", LABEL)
  408.  
  409.     RETZ3_MODE  = get_val("CYCLE   ID RETZ3", LABEL)
  410.  
  411.     /* Disks */
  412.     ROOT_PART   = get_val("POPLIST ID ROOT ", CONTENT)
  413.     RAM_DISK    = get_val("POPASL  ID RAMDI", CONTENT)
  414.  
  415.     /* Misc */
  416.     STRAP_OPTS  = get_val("POPLIST ID BOPTS", CONTENT)
  417.     KERNEL_OPTS = get_val("POPLIST ID KOPTS", CONTENT)
  418.  
  419.  
  420. return 0
  421.